package algorithm;

import java.util.Arrays;

/**
 * 给定一个整数数组 nums，其中恰好有两个元素只出现一次，其余所有元素均出现两次。 找出只出现一次的那两个元素。
 */
public class T00260 {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,1,3,2,5};
        System.out.println(Arrays.toString(new Solution().singleNumber(arr)));
    }

static class Solution {
    public int[] singleNumber(int[] nums) {
        int xor = 0;
        for (int num : nums) {
            xor ^= num;
        }
        int x = 1;
        while((xor & x) == 0) {
            x <<= 1;
        }
        int xor1 = 0, xor2 = 0;
        for (int num : nums) {
            if((num & x) == 0)
                xor1 ^= num;
            else
                xor2 ^= num;
        }
        return new int[]{xor2, xor1};
    }
}
}